package hu.bme.mit.androtext.androgen.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import hu.bme.mit.androtext.androgen.services.AndroGenDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalAndroGenDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'generate'", "'{'", "'project'", "'package'", "'platform'", "'}'", "'.'", "'.*'", "'Android 2.2'", "'Android 2.3.1'", "'Android 2.3.3'", "'Android 3.0'", "'Android 3.1'", "'Android 4.0'"
    };
    public static final int RULE_ID=4;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalAndroGenDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalAndroGenDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalAndroGenDslParser.tokenNames; }
    public String getGrammarFileName() { return "../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g"; }



     	private AndroGenDslGrammarAccess grammarAccess;
     	
        public InternalAndroGenDslParser(TokenStream input, AndroGenDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "AndroidGeneratorModel";	
       	}
       	
       	@Override
       	protected AndroGenDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleAndroidGeneratorModel"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:68:1: entryRuleAndroidGeneratorModel returns [EObject current=null] : iv_ruleAndroidGeneratorModel= ruleAndroidGeneratorModel EOF ;
    public final EObject entryRuleAndroidGeneratorModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAndroidGeneratorModel = null;


        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:69:2: (iv_ruleAndroidGeneratorModel= ruleAndroidGeneratorModel EOF )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:70:2: iv_ruleAndroidGeneratorModel= ruleAndroidGeneratorModel EOF
            {
             newCompositeNode(grammarAccess.getAndroidGeneratorModelRule()); 
            pushFollow(FOLLOW_ruleAndroidGeneratorModel_in_entryRuleAndroidGeneratorModel75);
            iv_ruleAndroidGeneratorModel=ruleAndroidGeneratorModel();

            state._fsp--;

             current =iv_ruleAndroidGeneratorModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAndroidGeneratorModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAndroidGeneratorModel"


    // $ANTLR start "ruleAndroidGeneratorModel"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:77:1: ruleAndroidGeneratorModel returns [EObject current=null] : ( (lv_targetApplications_0_0= ruleTargetApplication ) )* ;
    public final EObject ruleAndroidGeneratorModel() throws RecognitionException {
        EObject current = null;

        EObject lv_targetApplications_0_0 = null;


         enterRule(); 
            
        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:80:28: ( ( (lv_targetApplications_0_0= ruleTargetApplication ) )* )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:81:1: ( (lv_targetApplications_0_0= ruleTargetApplication ) )*
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:81:1: ( (lv_targetApplications_0_0= ruleTargetApplication ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:82:1: (lv_targetApplications_0_0= ruleTargetApplication )
            	    {
            	    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:82:1: (lv_targetApplications_0_0= ruleTargetApplication )
            	    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:83:3: lv_targetApplications_0_0= ruleTargetApplication
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getAndroidGeneratorModelAccess().getTargetApplicationsTargetApplicationParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTargetApplication_in_ruleAndroidGeneratorModel130);
            	    lv_targetApplications_0_0=ruleTargetApplication();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getAndroidGeneratorModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"targetApplications",
            	            		lv_targetApplications_0_0, 
            	            		"TargetApplication");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAndroidGeneratorModel"


    // $ANTLR start "entryRuleTargetApplication"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:107:1: entryRuleTargetApplication returns [EObject current=null] : iv_ruleTargetApplication= ruleTargetApplication EOF ;
    public final EObject entryRuleTargetApplication() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTargetApplication = null;


        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:108:2: (iv_ruleTargetApplication= ruleTargetApplication EOF )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:109:2: iv_ruleTargetApplication= ruleTargetApplication EOF
            {
             newCompositeNode(grammarAccess.getTargetApplicationRule()); 
            pushFollow(FOLLOW_ruleTargetApplication_in_entryRuleTargetApplication166);
            iv_ruleTargetApplication=ruleTargetApplication();

            state._fsp--;

             current =iv_ruleTargetApplication; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTargetApplication176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTargetApplication"


    // $ANTLR start "ruleTargetApplication"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:116:1: ruleTargetApplication returns [EObject current=null] : (otherlv_0= 'generate' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'project' ( (lv_projectName_4_0= ruleQualifiedName ) ) (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )? otherlv_7= 'platform' ( (lv_target_8_0= ruleApiLevel ) ) otherlv_9= '}' ) ;
    public final EObject ruleTargetApplication() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_projectName_4_0 = null;

        AntlrDatatypeRuleToken lv_packageName_6_0 = null;

        Enumerator lv_target_8_0 = null;


         enterRule(); 
            
        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:119:28: ( (otherlv_0= 'generate' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'project' ( (lv_projectName_4_0= ruleQualifiedName ) ) (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )? otherlv_7= 'platform' ( (lv_target_8_0= ruleApiLevel ) ) otherlv_9= '}' ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:120:1: (otherlv_0= 'generate' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'project' ( (lv_projectName_4_0= ruleQualifiedName ) ) (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )? otherlv_7= 'platform' ( (lv_target_8_0= ruleApiLevel ) ) otherlv_9= '}' )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:120:1: (otherlv_0= 'generate' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'project' ( (lv_projectName_4_0= ruleQualifiedName ) ) (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )? otherlv_7= 'platform' ( (lv_target_8_0= ruleApiLevel ) ) otherlv_9= '}' )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:120:3: otherlv_0= 'generate' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' otherlv_3= 'project' ( (lv_projectName_4_0= ruleQualifiedName ) ) (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )? otherlv_7= 'platform' ( (lv_target_8_0= ruleApiLevel ) ) otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleTargetApplication213); 

                	newLeafNode(otherlv_0, grammarAccess.getTargetApplicationAccess().getGenerateKeyword_0());
                
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:124:1: ( (otherlv_1= RULE_ID ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:125:1: (otherlv_1= RULE_ID )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:125:1: (otherlv_1= RULE_ID )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:126:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getTargetApplicationRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTargetApplication233); 

            		newLeafNode(otherlv_1, grammarAccess.getTargetApplicationAccess().getApplicationAndroidApplicationCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleTargetApplication245); 

                	newLeafNode(otherlv_2, grammarAccess.getTargetApplicationAccess().getLeftCurlyBracketKeyword_2());
                
            otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleTargetApplication257); 

                	newLeafNode(otherlv_3, grammarAccess.getTargetApplicationAccess().getProjectKeyword_3());
                
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:145:1: ( (lv_projectName_4_0= ruleQualifiedName ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:146:1: (lv_projectName_4_0= ruleQualifiedName )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:146:1: (lv_projectName_4_0= ruleQualifiedName )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:147:3: lv_projectName_4_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getTargetApplicationAccess().getProjectNameQualifiedNameParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleTargetApplication278);
            lv_projectName_4_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTargetApplicationRule());
            	        }
                   		set(
                   			current, 
                   			"projectName",
                    		lv_projectName_4_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:163:2: (otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) ) )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==14) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:163:4: otherlv_5= 'package' ( (lv_packageName_6_0= ruleQualifiedName ) )
                    {
                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleTargetApplication291); 

                        	newLeafNode(otherlv_5, grammarAccess.getTargetApplicationAccess().getPackageKeyword_5_0());
                        
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:167:1: ( (lv_packageName_6_0= ruleQualifiedName ) )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:168:1: (lv_packageName_6_0= ruleQualifiedName )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:168:1: (lv_packageName_6_0= ruleQualifiedName )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:169:3: lv_packageName_6_0= ruleQualifiedName
                    {
                     
                    	        newCompositeNode(grammarAccess.getTargetApplicationAccess().getPackageNameQualifiedNameParserRuleCall_5_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleTargetApplication312);
                    lv_packageName_6_0=ruleQualifiedName();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTargetApplicationRule());
                    	        }
                           		set(
                           			current, 
                           			"packageName",
                            		lv_packageName_6_0, 
                            		"QualifiedName");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleTargetApplication326); 

                	newLeafNode(otherlv_7, grammarAccess.getTargetApplicationAccess().getPlatformKeyword_6());
                
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:189:1: ( (lv_target_8_0= ruleApiLevel ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:190:1: (lv_target_8_0= ruleApiLevel )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:190:1: (lv_target_8_0= ruleApiLevel )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:191:3: lv_target_8_0= ruleApiLevel
            {
             
            	        newCompositeNode(grammarAccess.getTargetApplicationAccess().getTargetApiLevelEnumRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleApiLevel_in_ruleTargetApplication347);
            lv_target_8_0=ruleApiLevel();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTargetApplicationRule());
            	        }
                   		set(
                   			current, 
                   			"target",
                    		lv_target_8_0, 
                    		"ApiLevel");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_9=(Token)match(input,16,FOLLOW_16_in_ruleTargetApplication359); 

                	newLeafNode(otherlv_9, grammarAccess.getTargetApplicationAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTargetApplication"


    // $ANTLR start "entryRuleQualifiedName"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:221:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:222:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:223:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName398);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName409); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:230:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:233:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:234:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:234:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:234:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName449); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:241:1: (kw= '.' this_ID_2= RULE_ID )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==17) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:242:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,17,FOLLOW_17_in_ruleQualifiedName468); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName483); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameWithWildCard"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:262:1: entryRuleQualifiedNameWithWildCard returns [String current=null] : iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF ;
    public final String entryRuleQualifiedNameWithWildCard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildCard = null;


        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:263:2: (iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:264:2: iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameWithWildCardRule()); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard531);
            iv_ruleQualifiedNameWithWildCard=ruleQualifiedNameWithWildCard();

            state._fsp--;

             current =iv_ruleQualifiedNameWithWildCard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard542); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildCard"


    // $ANTLR start "ruleQualifiedNameWithWildCard"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:271:1: ruleQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildCard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:274:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:275:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:275:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:276:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    newCompositeNode(grammarAccess.getQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard589);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    afterParserOrEnumRuleCall();
                
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:286:1: (kw= '.*' )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==18) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:287:2: kw= '.*'
                    {
                    kw=(Token)match(input,18,FOLLOW_18_in_ruleQualifiedNameWithWildCard608); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getFullStopAsteriskKeyword_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildCard"


    // $ANTLR start "ruleApiLevel"
    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:300:1: ruleApiLevel returns [Enumerator current=null] : ( (enumLiteral_0= 'Android 2.2' ) | (enumLiteral_1= 'Android 2.3.1' ) | (enumLiteral_2= 'Android 2.3.3' ) | (enumLiteral_3= 'Android 3.0' ) | (enumLiteral_4= 'Android 3.1' ) | (enumLiteral_5= 'Android 4.0' ) ) ;
    public final Enumerator ruleApiLevel() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;

         enterRule(); 
        try {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:302:28: ( ( (enumLiteral_0= 'Android 2.2' ) | (enumLiteral_1= 'Android 2.3.1' ) | (enumLiteral_2= 'Android 2.3.3' ) | (enumLiteral_3= 'Android 3.0' ) | (enumLiteral_4= 'Android 3.1' ) | (enumLiteral_5= 'Android 4.0' ) ) )
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:303:1: ( (enumLiteral_0= 'Android 2.2' ) | (enumLiteral_1= 'Android 2.3.1' ) | (enumLiteral_2= 'Android 2.3.3' ) | (enumLiteral_3= 'Android 3.0' ) | (enumLiteral_4= 'Android 3.1' ) | (enumLiteral_5= 'Android 4.0' ) )
            {
            // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:303:1: ( (enumLiteral_0= 'Android 2.2' ) | (enumLiteral_1= 'Android 2.3.1' ) | (enumLiteral_2= 'Android 2.3.3' ) | (enumLiteral_3= 'Android 3.0' ) | (enumLiteral_4= 'Android 3.1' ) | (enumLiteral_5= 'Android 4.0' ) )
            int alt5=6;
            switch ( input.LA(1) ) {
            case 19:
                {
                alt5=1;
                }
                break;
            case 20:
                {
                alt5=2;
                }
                break;
            case 21:
                {
                alt5=3;
                }
                break;
            case 22:
                {
                alt5=4;
                }
                break;
            case 23:
                {
                alt5=5;
                }
                break;
            case 24:
                {
                alt5=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:303:2: (enumLiteral_0= 'Android 2.2' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:303:2: (enumLiteral_0= 'Android 2.2' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:303:4: enumLiteral_0= 'Android 2.2'
                    {
                    enumLiteral_0=(Token)match(input,19,FOLLOW_19_in_ruleApiLevel664); 

                            current = grammarAccess.getApiLevelAccess().getAPI8EnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getApiLevelAccess().getAPI8EnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:309:6: (enumLiteral_1= 'Android 2.3.1' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:309:6: (enumLiteral_1= 'Android 2.3.1' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:309:8: enumLiteral_1= 'Android 2.3.1'
                    {
                    enumLiteral_1=(Token)match(input,20,FOLLOW_20_in_ruleApiLevel681); 

                            current = grammarAccess.getApiLevelAccess().getAPI9EnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getApiLevelAccess().getAPI9EnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:315:6: (enumLiteral_2= 'Android 2.3.3' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:315:6: (enumLiteral_2= 'Android 2.3.3' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:315:8: enumLiteral_2= 'Android 2.3.3'
                    {
                    enumLiteral_2=(Token)match(input,21,FOLLOW_21_in_ruleApiLevel698); 

                            current = grammarAccess.getApiLevelAccess().getAPI10EnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getApiLevelAccess().getAPI10EnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:321:6: (enumLiteral_3= 'Android 3.0' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:321:6: (enumLiteral_3= 'Android 3.0' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:321:8: enumLiteral_3= 'Android 3.0'
                    {
                    enumLiteral_3=(Token)match(input,22,FOLLOW_22_in_ruleApiLevel715); 

                            current = grammarAccess.getApiLevelAccess().getAPI11EnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_3, grammarAccess.getApiLevelAccess().getAPI11EnumLiteralDeclaration_3()); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:327:6: (enumLiteral_4= 'Android 3.1' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:327:6: (enumLiteral_4= 'Android 3.1' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:327:8: enumLiteral_4= 'Android 3.1'
                    {
                    enumLiteral_4=(Token)match(input,23,FOLLOW_23_in_ruleApiLevel732); 

                            current = grammarAccess.getApiLevelAccess().getAPI12EnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_4, grammarAccess.getApiLevelAccess().getAPI12EnumLiteralDeclaration_4()); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:333:6: (enumLiteral_5= 'Android 4.0' )
                    {
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:333:6: (enumLiteral_5= 'Android 4.0' )
                    // ../hu.bme.mit.androtext.androgen/src-gen/hu/bme/mit/androtext/androgen/parser/antlr/internal/InternalAndroGenDsl.g:333:8: enumLiteral_5= 'Android 4.0'
                    {
                    enumLiteral_5=(Token)match(input,24,FOLLOW_24_in_ruleApiLevel749); 

                            current = grammarAccess.getApiLevelAccess().getAPI14EnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_5, grammarAccess.getApiLevelAccess().getAPI14EnumLiteralDeclaration_5()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleApiLevel"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleAndroidGeneratorModel_in_entryRuleAndroidGeneratorModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAndroidGeneratorModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTargetApplication_in_ruleAndroidGeneratorModel130 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_ruleTargetApplication_in_entryRuleTargetApplication166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTargetApplication176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleTargetApplication213 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTargetApplication233 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleTargetApplication245 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleTargetApplication257 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleTargetApplication278 = new BitSet(new long[]{0x000000000000C000L});
    public static final BitSet FOLLOW_14_in_ruleTargetApplication291 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleTargetApplication312 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleTargetApplication326 = new BitSet(new long[]{0x0000000001F80000L});
    public static final BitSet FOLLOW_ruleApiLevel_in_ruleTargetApplication347 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleTargetApplication359 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName398 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName449 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleQualifiedName468 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName483 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard531 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard589 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_18_in_ruleQualifiedNameWithWildCard608 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleApiLevel664 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleApiLevel681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleApiLevel698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleApiLevel715 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleApiLevel732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleApiLevel749 = new BitSet(new long[]{0x0000000000000002L});

}